PySide/es

Introducción

La biblioteca PySide es una interfaz Python para el kit de herramientas de interfaz gráfica de usuario (GUI) multiplataforma Qt. FreeCAD utiliza Qt como su principal kit de herramientas GUI. Qt es más que un simple kit de herramientas GUI; es una colección de bibliotecas C++ para diversos fines. Por ejemplo, se puede gestionar la comunicación en red con los componentes de la biblioteca Qt, todo ello accesible en Python a través de PySide. Cualquier interfaz gráfica que se pueda crear en C++ también se puede crear y modificar en Python. Una ventaja de usar Python es que las interfaces Qt se pueden desarrollar y probar en tiempo real, ya que no es necesario compilar los archivos fuente.

La forma recomendada de importar PySide (de cualquier versión) en FreeCAD es:

from PySide import QtCore, QtGui, QtWidgets

Versiones Qt y PySide

Ejemplos creados con PySide. Izquierda: un diálogo simple. Derecha: un diálogo más complejo con gráficos.

Inicio

FreeCAD y PySide

La idea original de FreeCAD era combinar CasCADE (núcleo geométrico), Qt (kit de herramientas de interfaz gráfica) y Python para crear un programa CAD paramétrico 3D gratuito con un motor de scripting integrado. Esto ocurrió a principios de la década de 2000, antes de la existencia de PySide, por lo que se utilizó un envoltorio diferente, PyQt, durante la primera década de vida de FreeCAD. PySide surgió para resolver los problemas de licencia de PyQt, y el cambio de FreeCAD a PySide se produjo en 2013 (commit 1dc122dc9a).

Si desea saber qué versión de Qt utiliza su instalación, el diálogo Acerca de contiene listados de versiones donde se incluye Qt.

Para más información, consulte:

Al instalar FreeCAD, obtendrá Qt y PySide como parte del paquete. Si va a compilar FreeCAD usted mismo, debe verificar que tenga instaladas versiones compatibles de estas dos bibliotecas para que FreeCAD funcione correctamente. Por supuesto, PySide solo funcionará si Qt está presente.

Inicio

Compatibilidad con múltiples versiones

La principal diferencia entre PySide y las bibliotecas posteriores PySide2 y PySide6 radica en los espacios de nombres. PySide (Qt4) tiene los espacios de nombres principales QtGui e QtCore, mientras que PySide2 (Qt5) y PySide6 (Qt6) introdujeron el espacio de nombres adicional QtWidgets, donde ahora se ubican todos los widgets, que antes estaban en el espacio de nombres QtGui.

FreeCAD gestiona las distintas versiones de Qt/PySide llamándolas todas PySide, aunque en realidad debería considerarse PySideX. No importa qué versión de Qt/PySide esté instalada, todas se importan con PySide.

Un shim maneja las diferencias entre las versiones. Este shim PySide se encuentra en el directorio Ext/ de una instalación de FreeCAD compilada para Qt5/Qt6.

/usr/share/freecad/Ext/PySide

Este módulo simplemente importa las clases necesarias de PySide2/6 y las ubica en el espacio de nombres PySide. Se eligió este enfoque por su capacidad para brindar compatibilidad con versiones anteriores desde la perspectiva de Qt4.

PySide2.QtCore -> PySide.QtCore
PySide2.QtGui -> PySide.QtGui
PySide2.QtWidgets -> PySide.QtWidgets
PySide2.QtSvg -> PySide.QtSvg
PySide2.QtUiTools -> PySide.QtUiTools

Por esta razón, las clases PySide2.QtWidgets también se colocan en el espacio de nombres PySide.QtGui.

PySide2.QtWidgets.QCheckBox -> PySide.QtGui.QCheckBox

Pero la forma recomendada actualmente es utilizar el sistema de espacios de nombres moderno.

from PySide import QtCore, QtGui, QtWidgets

my_check_box = QtWidgets.QCheckBox()

Inicio

Ejemplos de uso de PySide

Los ejemplos de PySide se dividen en tres partes, diferenciadas según el nivel de familiarización con PySide, Python y el funcionamiento interno de FreeCAD. La primera página ofrece una descripción general de PySide; la segunda y la tercera contienen principalmente ejemplos de código de distintos niveles.

Se espera que estos ejemplos sean útiles para empezar y, más adelante, el usuario podrá consultar otros recursos en línea o la documentación oficial.

Inicio

Documentación

Existen algunas diferencias en el manejo de widgets entre las distintas versiones. Los programadores deben tener en cuenta estas incompatibilidades y consultar la documentación oficial si algo no funciona como se espera en una plataforma determinada. Aunque es poco frecuente, en ocasiones puede ser necesario realizar llamadas con control de versiones mediante cláusulas condicionales.

La documentación de PySide hace referencia a las clases de estilo Python; sin embargo, dado que Qt es originalmente una biblioteca de C++, la misma información debería estar disponible en la referencia de C++ correspondiente.

Inicio